#ifndef PROGRESSDIALOG_H
#define PROGRESSDIALOG_H

#include <QDialog>
#include <QLabel>
#include <QProgressBar>
#include <QPushButton>
#include <QVBoxLayout>
#include <QHBoxLayout>
#include <QTimer>

class ProgressDialog : public QDialog
{
    Q_OBJECT
public:
    explicit ProgressDialog(const QString& title, QWidget* parent = nullptr);
    ~ProgressDialog();

    // 设置进度值(0-100)
    void setValue(int value);
    
    // 设置详细信息
    void setDetailText(const QString& text);
    
    // 设置是否显示取消按钮
    void setShowCancelButton(bool show);
    
    // 设置进度条样式
    void setProgressStyle(const QString& style);
    
    // 设置窗口样式
    void setWindowStyle(const QString& style);

signals:
    void canceled();

private slots:
    void onCancelClicked();
    void updateProgressAnimation();

private:
    void initUI();
    void setupConnections();
    void setupStyles();

private:
    QLabel* m_titleLabel;
    QLabel* m_detailLabel;
    QProgressBar* m_progressBar;
    QPushButton* m_cancelButton;
    QTimer* m_animationTimer;
    int m_currentValue;
    bool m_isAnimating;
};

#endif // PROGRESSDIALOG_H 